c++类模板template中的typename使用方法 |
您所在的位置:网站首页 › template typename t class › c++类模板template中的typename使用方法 |
c++ 类模板 template 中的 typename 使⽤⽅法 - 超级棒 转载: https://blog.csdn.net/vanturman/article/details/80269081 近⽇,看到这样⼀⾏代码: typedef typename __type_traits::has_trivial_destructor trivial_destructor; 看起来它应该是定义⼀个类型别名,但是 typedef 不应该是像这样使⽤么, typedef + 原类型名 + 新类型名: typedef char * PCHAR; 可为何此处多了⼀个 typename ?另外 __type_traits ⼜是什么? 看起来有些眼熟,想起之前在 Effective C++ 上曾经看过 traits 这⼀技术的介绍,和这⾥的 __type_traits 有点像。只是⼀直未曾遇到需要 traits 的时 候,所以当时并未仔细研究。然⽽ STL 中⼤量的充斥着的 traits ,⼀查才发现原来它是⼀种⾮常⾼级的技术,在更现的⾼级语⾔中已经很普 遍。因此这次花了些时间去学习它,接下来还有会有另⼀篇⽂章来详细介绍 C++ 的 traits 技术。在这⾥,我们暂时忘记它,仅将它当成⼀个普 通的类,先来探讨⼀下这个多出来的 typename 是怎么回事? typename 的常见⽤法 对于 typename 这个关键字,如果你熟悉 C++ 的模板,⼀定会知道它有这样⼀种最常见的⽤法 ( 代码摘⾃ C++ Primer)
// implement strcmp-like generic compare function
// returns 0 if the values are equal, 1 if v1 is larger, -1 if v1 is smaller
template
int compare( const T &v1, const T &v2)
{
if (v1 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |